/*
* ECARX Technology Limited is the owner of the copyright and the trade secret of this software.
* Without permission, no one has the right to obtain, disclose or use this software in any way.
*/

package ecarx.xsf.notificationcenter.interfaces;


import ecarx.xsf.notificationcenter.scenecard.ISceneCardInfo;

/**
 * FileName: OnSceneCardListener.java <br>
 * Description : 监听智能卡片到达和取消 <br>
 * Create Time: 2019/12/26 11:17 <br>
 * Update Time: 2021/8/3 14:07 <br>
 *
 * @since 1.0.0
 */
public interface OnSceneCardListener {

    /**
     * 接收智能卡片推送
     * <p> 客户端接收场景卡片消息入口 <br>
     *
     * @param sceneCardInfo {@link ISceneCardInfo} 卡片数据
     * @since 1.0.0
     */
    void onSceneCardPosted(ISceneCardInfo sceneCardInfo);

    /**
     * 取消智能卡片.
     * <p> 智能卡片消息被取消入口，取消 key 值保持一致的消息<br>
     *
     * @param sceneCardInfo {@link ISceneCardInfo} 卡片数据
     * @since 1.0.0
     */
    void onSceneCardRemoved(ISceneCardInfo sceneCardInfo);

    /**
     * 卡片消息.
     * <p>智能卡片快捷按钮<br>
     *
     * @param cardInfo {@link ISceneCardInfo} 快捷按钮
     * @since 1.0.0
     */
    void onQuickCardPosted(ISceneCardInfo cardInfo);

    /**
     * 智能卡片显示状态
     * <p> 当前智能卡片消息是否正在显示中，每次系统给客户端推送消息时需要根据此方法判断当前客户端是否处于可接收状态 <br>
     *
     * @return true 当前客户端可接收智能卡片消息，false 当前客户端不能接收智能卡片消息
     * @since 1.0.0
     */
    boolean onSceneInfoInShowing();
}
